package com.ubigate.CooknaviHA;

import java.io.File;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageButton;
import android.widget.ListView;

public class CooknaviHAActivity extends Activity implements OnClickListener, OnItemClickListener, ServiceUrls {
	private static final String TAG = "CooknaviHAActivity";

	Activity activity = null;
	//버튼 선언
	/** Top Menu Button **/
	private ImageButton btnRecipe = null; //레시피보기 버튼
	private ImageButton btnStore = null; //스토어 버튼
	private ImageButton btnChatroom = null; //수다방 버튼
	private ImageButton btnMyrecipe = null; //마이레시피 버튼
	//	private ImageButton btnSidedish = null; //반찬가게 버튼
	//	private ImageButton btnGroup = null; //공동구매 버튼

	
	
	/** Bottom Menu Button **/
	private ImageButton btnHome = null; //홈 버튼
	private ImageButton btnTimer = null; //타이머 버튼
	private ImageButton btnMetewand = null; //계량기준 버튼
	private ImageButton btnFavorite = null; //즐겨찾기 버튼
	//	private ImageButton btnMyrecipe = null; //마이레시피 버튼
	//	private ImageButton btnBack = null; //뒤로가기 버튼
	
	//리스트뷰와 어뎁터 변수 선언
	/** Recipe/Sidedish/Group/Notice ListView/ArrayAdapter **/
	private ListView lvRecipe; //레시피 리스트뷰
	private MainRecipeAdapter ra; // com.ubigate.CooknaviHA 패키지에서 레시피 리스트뷰와 item 연결시켜주기위해 어뎁터 선언
	private ListView lvSidedish; // 반찬 리스트뷰
	private MainSidedishAdapter sa; // com.ubigate.CooknaviHA 패키지에서 반찬 리스트뷰와 item 연결시켜주기위해 어뎁터 선언
	private ListView lvGroup; //공동구매 리스트뷰
	private MainGroupAdapter ga; // com.ubigate.CooknaviHA 패키지에서 공동구매 리스트뷰와 item 연결시켜주기위해 어뎁터 선언
	private ListView lvNotice; //공지사항 리스트뷰
	private MainNoticeAdapter na; // com.ubigate.CooknaviHA 패키지에서 공지사항 리스트뷰와 item 연결시켜주기위해 어뎁터 선언
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); //setContentView를 통해 CooknaviHAActivity에서 main.xml을 띄워줌
    
        activity = this;
        
        Log.d(TAG,"CooknaviHAActivity"); //tomcat에 CooknaviActivity를 찍어주기위해 사용

        // Top menu
        btnRecipe = (ImageButton) findViewById(R.id.btn_recipe); // xml에 선언된 btn_recipe버튼을 btnRecipe에 대입(레시피보기버튼)
        //btnSidedish = (ImageButton) findViewById(R.id.btn_sidedish); // xml에 선언된 btn_sidedish버튼을 btnSidedish에 대입(반찬가게버튼)
        btnStore = (ImageButton) findViewById(R.id.btn_store); // xml에 선언된 btn_sidedish버튼을 btnSidedish에 대입(반찬가게버튼)
        btnMyrecipe = (ImageButton) findViewById(R.id.btn_myrecipe);//xml에 선언된 btn_myrecipe버튼을 btnMyrecipe에 대입(마이레시피버튼)
        //btnGroup = (ImageButton) findViewById(R.id.btn_group); //xml에 선언된 btn_group버튼을 btnGroup에 대입(공동구매버튼)
        btnChatroom = (ImageButton) findViewById(R.id.btn_chatroom); // xml에 선언된 btn_chatroom버튼을 btnChatroom에 대입(수다방버튼)
        
        btnRecipe.setOnClickListener(this); //CooknaviHAActivity에서 레시피보기 버튼을 활성화 시키기위해 listener설정
        //btnSidedish.setOnClickListener(this);//CooknaviHAActivity에서 반찬가게 버튼을 활성화 시키기위해 listener설정
        btnStore.setOnClickListener(this);//CooknaviHAActivity에서 반찬가게 버튼을 활성화 시키기위해 listener설정
        btnMyrecipe.setOnClickListener(this);//CooknaviHAActivity에서 마이레시피 버튼을 활성화 시키기위해 listener설정
        //btnGroup.setOnClickListener(this);//CooknaviHAActivity에서 공동구매 버튼을 활성화 시키기위해 listener설정
        btnChatroom.setOnClickListener(this);//CooknaviHAActivity에서 수다방 버튼을 활성화 시키기위해 listener설정
        
        // Bottom menu
        btnHome = (ImageButton) findViewById(R.id.btn_home); //xml에 선언된 btn_home버튼을 btnHome에 대입(홉버튼)
        btnTimer = (ImageButton) findViewById(R.id.btn_timer);//xml에 선언된 btn_timer버튼을 btnTimer에 대입(타이머버튼)
        btnMetewand = (ImageButton) findViewById(R.id.btn_metewand);//xml에 선언된 btn_metewand버튼을 btnMetewand에 대입(계량기준버튼)
        btnFavorite = (ImageButton) findViewById(R.id.btn_favorite);//xml에 선언된 btn_favorite버튼을 btnFavorite에 대입(즐겨찾기버튼)
        
        btnHome.setOnClickListener(this); //CooknaviHAActivity에서 홈 버튼을 활성화 시키기위해 listener설정
        btnTimer.setOnClickListener(this);//CooknaviHAActivity에서 타이머 버튼을 활성화 시키기위해 listener설정
        btnMetewand.setOnClickListener(this); //CooknaviHAActivity에서 계량기준 버튼을 활성화 시키기위해 listener설정
        btnFavorite.setOnClickListener(this);//CooknaviHAActivity에서 즐겨찾기 버튼을 활성화 시키기위해 listener설정
        //btnBack.setOnClickListener(this);//CooknaviHAActivity에서 뒤로가기 버튼을 활성화 시키기위해 listener설정
        
        lvRecipe = (ListView) findViewById(R.id.list_recipe); //xml에 선언된 list_recipe를 lvRecipe에 대입(레시피 listview)
        lvSidedish = (ListView) findViewById(R.id.list_sidedish); //xml에 선언된 list_sidedish를 lvSidedish에 대입(반찬 listview)
        lvGroup = (ListView) findViewById(R.id.list_group);//xml에 선언된 list_group을 lvGroup에 대입(공동구매 listview)
        lvNotice = (ListView) findViewById(R.id.list_notice);//xml에 선언된 list_notice를 lvNotice에 대입(공지사항listview)
        
        
        /*RecipeArrayList의 item을 listitem.xml의 틀에 맞게 CooknaviActivity에 나타내기위해 MainRecipeAdapter변수 ra 생성*/
        ra = new MainRecipeAdapter(this, R.layout.listitem, ((CooknaviApp)getApplicationContext()).jMainItems.getRecipeArrayList());
        /*SidedistArrayList의 item을 listitem.xml의 틀에 맞게 CooknaviActivity에 나타내기위해 MainSidedishAdapter변수 sa 생성*/
        sa = new MainSidedishAdapter(this, R.layout.listitem, ((CooknaviApp)getApplicationContext()).jMainItems.getSidedishArrayList());
        /*GroupArrayList의 item을 listitem.xml의 틀에 맞게 CooknaviActivity에 나타내기위해 MainGroupAdapter변수 ga 생성*/
        ga = new MainGroupAdapter(this, R.layout.listitem, ((CooknaviApp)getApplicationContext()).jMainItems.getGroupArrayList());
        /*NoticeArrayList의 item을 listitem.xml의 틀에 맞게 CooknaviActivity에 나타내기위해 MainNoticeAdapter변수 na 생성*/
        na = new MainNoticeAdapter(this, R.layout.simple_list_item, ((CooknaviApp)getApplicationContext()).jMainItems.getNoticeArrayList());
        
        
        
        lvRecipe.setAdapter(ra);//listview lvRecipe에 맍는 ra 어뎁터 설정
        lvRecipe.setFastScrollEnabled(true);
        lvRecipe.setOnItemClickListener(this);//listview lvRecipe에 list클릭을 활성화 시키기위해 listener 설정
        lvSidedish.setAdapter(sa);//listview lvSidedish에 맍는 sa 어뎁터 설정
        lvSidedish.setFastScrollEnabled(true);
        lvSidedish.setOnItemClickListener(this);//listview lvSidedish에 list클릭을 활성화 시키기위해 listener 설정
        lvGroup.setAdapter(ga);//listview lvGroup에 맍는 ga 어뎁터 설정
        lvGroup.setFastScrollEnabled(true);
        lvGroup.setOnItemClickListener(this);//listview lvGroup에 list클릭을 활성화 시키기위해 listener 설정
        lvNotice.setAdapter(na);//listview lvNotice에 맍는 na 어뎁터 설정
        lvNotice.setFastScrollEnabled(true);
        lvNotice.setOnItemClickListener(this);//listview lvNotice에 list클릭을 활성화 시키기위해 listener 설정
    }

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		int viewId = v.getId(); //view클릭시 id를 받아 viewId에 대입
		Intent intent;//화면을 바꿔주기위해 intent선언
		
		switch (viewId) {
		// Top Menu
		case R.id.btn_recipe: //레시피보기 버튼 클릭시 
			//intent를 통해 CooknaviHAAcitivity에서 WebviewActivity로 전환하도록 intent 생성
			intent = new Intent(CooknaviHAActivity.this, WebviewActivity.class);
			//sRecipeUrl을 함께 intent에 넘겨줌
			intent.putExtra("url", sRecipeUrl);
			//intent Activity를 활성화
			startActivity(intent);
			break;
		case R.id.btn_store: // 스토어 버튼 클릭시
			/*
			//intent를 통해 CooknaviHAAcitivity에서 WebviewActivity로 전환하도록 intent 생성
			intent = new Intent(CooknaviHAActivity.this, WebviewActivity.class);
			//sSidedishUrl을 함께 intent에 넘겨줌
			intent.putExtra("url", sSidedishUrl);
			//intent Activity를 활성화
			startActivity(intent);
			*/
			break;
		case R.id.btn_chatroom: //수다방 버튼 클릭시
			//intent를 통해 CooknaviHAAcitivity에서 WebviewActivity로 전환하도록 intent 생성
			intent = new Intent(CooknaviHAActivity.this, WebviewActivity.class);
			//sChatroomUrl을 함께 intent에 넘겨줌
			intent.putExtra("url", sChatroomUrl);
			//intent Activity를 활성화
			startActivity(intent);
			
			break;
		case R.id.btn_myrecipe: //마이레시피 버튼 클릭시
			/*
			//intent를 통해 CooknaviHAAcitivity에서 WebviewActivity로 전환하도록 intent 생성
			intent = new Intent(CooknaviHAActivity.this, WebviewActivity.class);
			//sGroupUrl을 함께 intent에 넘겨줌
			intent.putExtra("url", sGroupUrl);
			//intent Activity를 활성화
			startActivity(intent);
			*/
			break;
		// Bottom Menu
		case R.id.btn_home://홈버튼 클릭시
			// 처리할 내용 없음
			break;
		case R.id.btn_timer://타이버 버튼 클릭시
			//intent를 통해 CooknaviHAActivity에서 TimerActivity로 전환하도록 intent 생성
			intent = new Intent(CooknaviHAActivity.this, TimerActivity.class);
			//intent Activity를 활성화
			startActivity(intent);
			break;
		case R.id.btn_metewand://계량기준 버튼 클릭시
			//intent를 통해 CooknaviHAActivity에서 MetewandActivity로 전환하도록 intent 생성
			intent = new Intent(CooknaviHAActivity.this, MetewandActivity.class);
			//intent Activity를 활성화
			startActivity(intent);
			break;
		case R.id.btn_favorite://즐겨찾기 버튼 클릭시
			/*
 			//intent를 통해 CooknaviHAActivity에서 MyrecipeActivity로 전환하도록 intent 생성
			intent = new Intent(CooknaviHAActivity.this, MyrecipeActivity.class);
			//intent Activity를 활성화
			startActivity(intent);
			*/
			break;
		/*case R.id.btn_back://뒤로가기 버튼 클릭시
//			ActivityManager am = (ActivityManager)activity.getSystemService(Activity.ACTIVITY_SERVICE);
//			am.killBackgroundProcesses(activity.getPackageName());
			onBackPressed();/*			*/
		}
	}
	@Override
	public void onBackPressed() {
		Log.d(TAG, "onBackPressed");//tomcat에 onBackPressed 찍어줌
		clearApplicationCache(null); //어플리케이션 종료시 cache 삭제
		clearDataFiles(((CooknaviApp)getApplicationContext()).extDir);
		android.os.Process.killProcess(android.os.Process.myPid());	// activity를 종료하기 위해서
	}
	
	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position, long id) {//리스트 item클릭시 활성화 메소드 오버라이드
		// TODO Auto-generated method stub
		String sLinkUrl = ((MainItem)parent.getItemAtPosition(position)).getLinkUrl();
    	Log.d(TAG, "pos : "+position+", link : "+sLinkUrl);
		Intent intent;
		//intent를 통해 CooknaviHAActivity에서 MyrecipeActivity로 전환하도록 intent 생성
		intent = new Intent(CooknaviHAActivity.this, WebviewActivity.class);
		//sLinkUrl에도 intent에 넣어줌
		intent.putExtra("url", sLinkUrl);
		//intent활성화
		startActivity(intent);
	}
    
	@Override
	protected void onDestroy() {
		Log.d(TAG, "onDestroy");
		super.onDestroy();
	}

	private void clearDataFiles(File dir) {
        File [] children = dir.listFiles();//변수로 받은 dir에 파일 리스트를 children배열에 넣음
        try{
            for(int i=0;i<children.length;i++)
                if(children[i].isDirectory()) {//children배열마다 파일 여부 판단 있을 경우
                	clearDataFiles(children[i]); //data파일을 삭제
                	children[i].delete();//children배열에서 지움
                }
                else {//파일이 없을 경우
                	String sFilename = children[i].toString();//해당 파일을 스트링으로 변환해서 sFilename에 대입
                	String sExtension = sFilename.substring(sFilename.length()-3); //sFilename에 마지막 3자를 sExtension에 대입
                	if (sExtension.equals("rcs")) ;//rcs와 sExtension이 같은지 환일 .
                	else children[i].delete();// 아니면 children배열에서 삭제
                }
        }
        catch(Exception e){}		
	}
	
    private void clearApplicationCache(File dir) {//어플리케이션 종료시 cache 삭제
        if(dir==null)//dir이 null이면
            dir = getCacheDir();//Cache디렉토리를 받아 dir변수에 넣음
        else
        	//아무일도 일어나지 않음;
        if(dir==null)//dir이 null이면
            return;//return
        else
        	//아무일도 일어나지 않음;
        Log.d(TAG, "cache dir :"+dir.getPath());//tomcat에 cache dir : 디렉토리 경로 찍어주기 위해
        File [] children = dir.listFiles(); //children 변수에 dir에 있는 디렉토리 파일리스트를 받음
        try{
            for(int i=0;i<children.length;i++)//children에 있는 파일을 하나하나 검사
                if(children[i].isDirectory())//디렉토리 여부를 판단 잇으면
                    clearApplicationCache(children[i]);//어플리케이션을 종료시킴
                else children[i].delete();//없을경우 삭제
        }
        catch(Exception e){}
    }
}